package protocol.JTT1078_2016;

import java.nio.ByteBuffer;

public class JTT1078_2016Utils {

    public static byte[] data1078UnEscape(byte[] data){
        ByteBuffer buf = ByteBuffer.allocate(data.length);
        buf.put(data[0]);

        /**
         * 除去首尾标识位，遍历整个字节流，如果存在0x7d01或者0x7d02，则需要进行转义
         */
        for (int i = 1; i < data.length-1; i++) {

            byte b = data[i];

            if(b == 0x7D){
                if (data[i+1] == 0x01){
                    buf.put((byte)0x7d);
                    i++;
                }else if (data[i +1] == 0x02){
                    buf.put((byte)0x7e);
                    i++;
                }
            }else{
                buf.put(b);
            }
        }

        buf.put(data[data.length-1]);

        buf.flip();
        byte[] temp = new byte[buf.limit()];
        buf.get(temp);

        return temp;
    }
}
